package com.ben.multiple.minio;

import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.errors.MinioException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * @author BenJin Yin
 * @date 2020/5/7
 */
@Component
@AllArgsConstructor
public class MinioService {
    private final Config config;

    public void te() {
        try {
            // 使用MinIO服务的URL，端口，Access key和Secret key创建一个MinioClient对象
            MinioClient minioClient = new MinioClient(config.getEndpoint(), config.getAccessKey(), config.getSecretKey());
            // 检查存储桶是否已经存在
            boolean isExist = minioClient.bucketExists("test1");
            if (isExist) {
                System.out.println("test1 already exists.");
            } else {
                // 创建一个名为asiatrip的存储桶，用于存储照片的zip文件。
                minioClient.makeBucket("test1");
            }
            // 使用putObject上传一个文件到存储桶中。
            minioClient.putObject("test1", "address_five.sql", "C:\\Users\\b\\Documents\\address_five.sql", null);
            System.out.println("success");
        } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e) {
            System.out.println("Error occurred: " + e);
        }
    }

    public void common(InputStream inputStream) {
        try {
            // 使用MinIO服务的URL，端口，Access key和Secret key创建一个MinioClient对象
            MinioClient minioClient = new MinioClient(config.getEndpoint(), config.getAccessKey(), config.getSecretKey());
            // 检查存储桶是否已经存在
            boolean isExist = minioClient.bucketExists("test1");
            if (isExist) {
                System.out.println("test1 already exists.");
            } else {
                // 创建一个名为asiatrip的存储桶，用于存储照片的zip文件。
                minioClient.makeBucket("test1");
            }
            // 使用putObject上传一个文件到存储桶中。
            minioClient.putObject("test1", "testCommon", inputStream, new PutObjectOptions(-1, PutObjectOptions.MAX_PART_SIZE));
            System.out.println("success");
        } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e) {
            System.out.println("Error occurred: " + e);
        }
    }


}
